package moduloConhecimento;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

public class MapeamentoTeclado
{

	private String idiomaTeclado;

	private String caminhoImagem;

	private List<MapeamentoTecla> teclado = new ArrayList<MapeamentoTecla>();

	public MapeamentoTeclado(String nomeArquivo) throws IOException
	{
		File arquivo = new File(nomeArquivo + "regras.txt");
		FileReader leitor;
		String info = null;

		leitor = new FileReader(arquivo);
		BufferedReader buffer = new BufferedReader(leitor);

		while ((info = buffer.readLine()) != null)
		{
			MapeamentoTecla tecla = new MapeamentoTecla();

			if (info.charAt(0) != '#' && info.charAt(0) != '$')
			{
				String dados[] = info.split("\t");
				tecla.setPosXsuperiorEsquerdo(Integer.parseInt(dados[0]));
				tecla.setPosYsuperiorEsquerdo(Integer.parseInt(dados[1]));
				tecla.setPosXinferiorDireito(Integer.parseInt(dados[2]));
				tecla.setPosYinferiorDireito(Integer.parseInt(dados[3]));
				tecla.setTeclaComShift(dados[4]);
				tecla.setTeclaSemShift(dados[5]);
				tecla.setDedo(Integer.parseInt(dados[6]));
				tecla.setLinha(Integer.parseInt(dados[7]));
				teclado.add((MapeamentoTecla) tecla);

			}
			else if (info.charAt(0) == '$')
			{
				String dados[] = info.split("\t");
				this.idiomaTeclado = dados[0].substring(1);
				this.caminhoImagem = dados[1].substring(1);
			}

		}
		buffer.close();

	}

	public List<MapeamentoTecla> getTeclado()
	{
		return teclado;
	}

	public Iterator getIterator()
	{
		Iterator<MapeamentoTecla> it = teclado.iterator(); // make an iterator
		return it;

	}

	public MapeamentoTecla getTecla(String letra)
	{
		MapeamentoTecla tc = null;
		Iterator it = this.getIterator();
		while (it.hasNext())
		{
			tc = (MapeamentoTecla) it.next();
			if (tc.isTecla(letra))
			{

				break;
			}
		}
		return tc;
	}

	public String getCaminhoImagem()
	{
		return caminhoImagem;
	}

	public void setCaminhoImagem(String caminhoImagem)
	{
		this.caminhoImagem = caminhoImagem;
	}

	public String getIdiomaTeclado()
	{
		return idiomaTeclado;
	}

	public void setIdiomaTeclado(String idiomaTeclado)
	{
		this.idiomaTeclado = idiomaTeclado;
	}
	
	public int getLinha(String letra){
		return getTecla(letra).getLinha();
		
	}

}
